home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Other Langs / MacPerl ƒ / Perl Source ƒ / MacPerl / MPGlobals.h < prev    next >
Text File  |  1993-12-18  |  6KB  |  294 lines

  1. /*********************************************************************
  2. Project    :    MacPerl                -    Real Perl Application
  3. File        :    MPGlobals.h    -
  4. Author    :    Matthias Neeracher
  5.  
  6. A lot of this code is borrowed from 7Edit written by
  7. Apple Developer Support UK
  8.  
  9. Started    :    17Mar93                                Language    :    MPW C
  10. Modified    :    29May93    MN    Compiles correctly
  11.                 29May93    MN    Support console windows
  12.                 05Aug93    MN    Small icons
  13.                 17Aug93    MN    LibraryPaths
  14.                 12Dec93    MN    PerlPrefs, SacrificalGoat
  15. Last        :    12Dec93
  16. *********************************************************************/
  17.  
  18. #ifndef __MPGLOBALS__
  19. #define __MPGLOBALS__
  20.  
  21. #include <Types.h>
  22. #include <QuickDraw.h>
  23. #include <Menus.h>
  24. #include <Editions.h>
  25. #include <Printing.h>
  26. #include <AppleEvents.h>
  27.  
  28. #include "MPRsrc.h"
  29.  
  30. #ifndef EXTERN
  31. #define EXTERN extern 
  32. #endif
  33.  
  34. #define    LibraryPaths    128
  35.  
  36. /*
  37.     Items in Apple Menu
  38. */
  39.  
  40. #define  aboutItem  1
  41.  
  42. /*
  43.     Items in File Menu
  44. */
  45.  
  46. #define  fmNew                    1
  47. #define  fmOpen                2
  48. #define  fmClose                4
  49. #define  fmSave                5
  50. #define  fmSaveAs                6
  51. #define  fmRevert                7
  52. #define  fmPageSetUp            9
  53. #define  fmPrint                10
  54. #define  fmQuit                12
  55.  
  56. /*
  57.     Items in Edit Menu
  58. */
  59. #define  undoCommand            1
  60. #define  cutCommand             3
  61. #define  copyCommand         4
  62. #define  pasteCommand         5
  63. #define  clearCommand         6
  64. #define  selectAllCommand     7
  65.  
  66. #define    emFormat                9
  67.  
  68. #ifndef RUNTIME
  69.  
  70. #define  cPublisher           11
  71. #define  cSubscriber          12
  72. #define  cOptions             13
  73. #define  cBorders             14
  74.  
  75. #define    emPreferences        16
  76.  
  77. #else
  78.  
  79. #define    emPreferences        11
  80.  
  81. #endif
  82.  
  83. /*
  84.     Items in Perl Menu
  85. */
  86. #define    pmRun                1
  87. #define    pmRunFront        2
  88.  
  89. #ifndef RUNTIME
  90.  
  91. /*
  92.     Item in Help Menu
  93. */
  94. #define    hmExplain        5
  95.  
  96. #endif
  97.  
  98. /*
  99.     Entry of Menu in myMenus
  100. */
  101. #define  appleM             0
  102. #define  fileM              1
  103. #define  editM              2
  104. #define    windowM            3
  105. #define    perlM                4
  106.  
  107. #ifndef RUNTIME
  108.  
  109. #define    helpM                5
  110. #define  kLastMenu        5
  111.  
  112. #else
  113.  
  114. #define kLastMenu            4
  115.  
  116. #endif
  117.  
  118. /*
  119.     Save Changes Dialog Items
  120. */
  121.  
  122. #define  aaSave              1
  123. #define  aaDiscard          2
  124. #define  aaCancel         3
  125.  
  126. #define  kOSEvent                       app4Evt    /*event used by MultiFinder*/
  127. #define  kSuspendResumeMessage        1        /*high byte of suspend/resume event message*/
  128. #define  kResumeMask                         1        /*bit of message field for resume vs. suspend*/
  129. #define  kMouseMovedMessage              0xFA    /*high byte of mouse-moved event message*/
  130. #define  kNoEvents                         0        /*no events mask*/
  131.  
  132. /* How much memory to set aside for emergencies */
  133.  
  134. #define SACRIFICE        32768
  135.  
  136. /* File too bulky for TextEdit */
  137.  
  138. #define elvisErr        666
  139.  
  140. /*
  141.     this is a section record to hold the information about
  142.     the publishers and subscribers in this document
  143. */
  144.  
  145. struct SectRec {
  146.     SectionHandle   fSectHandle;
  147.     short           fSectionID;
  148.     RgnHandle       fBorderRgn; /*handle to the outside border*/
  149.     Rect            fInnerBounds;
  150.     short           fStart;     /*fStart and fEnd are both specific to a*/
  151.     short           fEnd;       /*text handling application- start and end of text selection*/
  152.     struct SectRec  **fNextSection;
  153.     FSSpec          fFSSpec;
  154.     short           fCount;
  155.     Handle          fTextHandle;
  156.     Boolean         fChanged; /*has the section been changed*/
  157.     struct DocRec   *fDocument;
  158. };
  159.  
  160. typedef struct SectRec SectRec;
  161. typedef SectRec *SectPtr, **SectHandle;
  162.  
  163. typedef enum {
  164.     kDocumentWindow,
  165.     kWorksheetWindow,
  166.     kConsoleWindow
  167. } WindowKind;
  168.  
  169. typedef struct RegularDoc {
  170.     Boolean          showBorders;
  171.     Boolean        everSaved;
  172.     SectHandle       firstSection; /*the first section in the list*/
  173.     SectHandle       lastSection;  /*the last section*/
  174.     short          numSections;
  175.     short          lastID;      /*the last sectionID*/
  176. } RegularDoc;
  177.  
  178. struct DocRec;
  179.  
  180. typedef struct ConsoleDoc {
  181.     struct DocRec *next;
  182.     Ptr                cookie;
  183.     short                memory;
  184.     short                fence;
  185.     Boolean            selected;
  186. } ConsoleDoc;
  187.  
  188. enum {
  189.     stateConsole = 0x0001,
  190.     stateDocument= 0x0002,
  191.     stateRdWr    = 0x0010,
  192.     stateRdOnly  = 0x0020,
  193.     stateBlocked = 0x0030
  194. };
  195.  
  196. typedef enum {
  197.     kPreferenceDoc = -1,
  198.     kUnknownDoc,
  199.     kPlainTextDoc,
  200.     kScriptDoc,
  201.     kRuntime6Doc,
  202.     kRuntime7Doc,
  203.     kOldRuntime6Doc
  204. } DocType;
  205.  
  206. struct DocRec {
  207.     TEHandle       theText;
  208.     ControlHandle  vScrollBar;
  209.     ControlHandle  hScrollBar;
  210.     WindowPtr      theWindow;
  211.     short          refNum;
  212.     short                lastState;
  213.     Str255         theFileName;
  214.     FSSpec           theFSSpec;
  215.     THPrint        thePrintSetup;
  216.     Rect           pageSize;    /*From thePrintSetUp^^.prInfo.rPage but 0 offset*/
  217.     Boolean        dirty;
  218.     DocType            type;
  219.     WindowKind        kind;
  220.     union {
  221.         RegularDoc    reg;
  222.         ConsoleDoc    cons;
  223.     } u;
  224. };
  225.  
  226. typedef struct DocRec DocRec;
  227. typedef DocRec *DPtr;
  228.  
  229. struct HeaderRec {
  230.     Rect        theRect;
  231.     Str255   theFont;
  232.     short        theSize;
  233.     short    theLength;
  234.     short    numSections;
  235.     short    lastID;
  236. };
  237.  
  238. typedef struct HeaderRec HeaderRec;
  239. typedef HeaderRec *HPtr, **HHandle;
  240.  
  241. struct DocFormat {
  242.     short        font;
  243.     short        size;
  244. };
  245.  
  246. typedef struct DocFormat DocFormat;
  247.  
  248. struct PerlPrefs    {
  249.     short        version;
  250. #define PerlPrefVersion411    0
  251.     Boolean    runFinderOpens;
  252.     Boolean    checkType;
  253. };
  254.  
  255. typedef struct PerlPrefs PerlPrefs;
  256.  
  257. EXTERN short              gWCount;
  258. EXTERN short              gNewDocCount;
  259. EXTERN MenuHandle         myMenus[kLastMenu+1];
  260. EXTERN short              gFontMItem;
  261. EXTERN Boolean            gQuitting;
  262. EXTERN Cursor             editCursor;
  263. EXTERN Cursor             waitCursor;
  264. EXTERN Boolean            gInBackground;
  265. EXTERN Boolean                gRunningPerl;
  266. EXTERN DPtr                    gConsoleList;
  267. EXTERN short                gPrefsFile;
  268. EXTERN short                gScriptFile;
  269. EXTERN WindowPtr            gActiveWindow;
  270. EXTERN short                gAppFile;
  271. EXTERN short                gAppVol;
  272. EXTERN long                    gAppDir;
  273. EXTERN DocFormat            gFormat;
  274. EXTERN Handle                gRuntimeScript;
  275. EXTERN Handle                gPseudoFile;
  276. EXTERN AppleEvent ***    gWaitingScripts;
  277. EXTERN DPtr                    gGotEof;
  278. EXTERN PerlPrefs            gPerlPrefs;
  279. EXTERN Handle                gSacrificialGoat;
  280.  
  281.   /*now for the environment variables set up by Gestalt*/
  282.  
  283. EXTERN Boolean    gAppleEventsImplemented;
  284.  
  285. #ifndef RUNTIME
  286.  
  287. EXTERN Boolean    gAliasManagerImplemented;
  288. EXTERN Boolean    gEditionManagerImplemented;
  289. EXTERN Boolean    gOutlineFontsImplemented;
  290. EXTERN Boolean    gRecordingImplemented;
  291.  
  292. #endif
  293.  
  294. #endif